package org.lestr.secuel.sogl.objets3D;


import org.lestr.secuel.m3ds.objets2D.IImage;
import org.lestr.secuel.m3ds.objets3D.Materiau;

public class SOGLMateriau implements Materiau {

	
	// Déclaration des attributs
	private double rougeAmbiant;
	private double vertAmbiant;
	private double bleuAmbiant;
	private double rougeDiffue;
	private double vertDiffue;
	private double bleuDiffue;
	private double rougeSpéculaire;
	private double vertSpéculaire;
	private double bleuSpéculaire;
	private double rougeEmissif;
	private double vertEmissif;
	private double bleuEmissif;
	private IImage image;
	private String nom;
	
	
	/** Constructeur */
	public SOGLMateriau(){
		
		// Instanciation des attributs
		rougeAmbiant = 10;
		vertAmbiant = 10;
		bleuAmbiant = 10;
		rougeDiffue = 150;
		vertDiffue = 150;
		bleuDiffue = 150;
		rougeSpéculaire = 50;
		vertSpéculaire = 50;
		bleuSpéculaire = 50;
		rougeEmissif = 0;
		vertEmissif = 0;
		bleuEmissif = 0;
		image = null;
		nom = "Nouveau matériau";
		
	}// FIN Constructeur
	
	
	/** Défini la couleur vue à la lumière ambiante */
	public void définirCouleurAmbiante(double rouge, double vert, double bleu){
		
		rougeAmbiant = rouge;
		vertAmbiant = vert;
		bleuAmbiant = bleu;
		
	}// FIN defCouleurAmbiante
	
	
	/** Retourne la composante rouge de la couleur */
	public double obtenirRougeAmbiant(){
		
		return rougeAmbiant;
		
	}// FIN retRougeAmbiant
	
	
	/** Retourne la composante verte de la couleur */
	public double obtenirVertAmbiant(){
		
		return vertAmbiant;
		
	}// FIN retVertAmbiant
	
	
	/** Retourne la composante bleue de la couleur */
	public double obtenirBleuAmbiant(){
		
		return bleuAmbiant;
		
	}// FIN retBleuAmbiant

	
	/** Défini la couleur vue à la lumière diffuse (couleur "normale") */
	public void définirCouleurDiffuse(double rouge, double vert, double bleu){
		
		rougeDiffue = rouge;
		vertDiffue = vert;
		bleuDiffue = bleu;
		
	}// FIN defCouleurDiffuse
	
	
	/** Retourne la composante rouge de la couleur */
	public double obtenirRougeDiffue(){
		
		return rougeDiffue;
		
	}// FIN retRougeDiffue
	
	
	/** Retourne la composante verte de la couleur */
	public double obtenirVertDiffue(){
		
		return vertDiffue;
		
	}// FIN retVertDiffue
	
	
	/** Retourne la composante bleue de la couleur */
	public double obtenirBleuDiffue(){
		
		return bleuDiffue;
		
	}// FIN retBleuDiffue

	
	/** Défini la couleur vue à la lumière spéculaire (reflets) */
	public void définirCouleurSpéculaire(double rouge, double vert, double bleu){
		
		rougeSpéculaire = rouge;
		vertSpéculaire = vert;
		bleuSpéculaire = bleu;
		
	}// FIN defCouleurSpéculaire
	
	
	/** Retourne la composante rouge de la couleur */
	public double obtenirRougeSpéculaire(){
		
		return rougeSpéculaire;
		
	}// FIN retRougeSpéculaire
	
	
	/** Retourne la composante verte de la couleur */
	public double obtenirVertSpéculaire(){
		
		return vertSpéculaire;
		
	}// FIN retVertSpéculaire
	
	
	/** Retourne la composante bleue de la couleur */
	public double obtenirBleuSpéculaire(){
		
		return bleuSpéculaire;
		
	}// FIN retBleuSpéculaire

	
	/** Défini la couleur de la lumière émise par l'objet */
	public void définirCouleurEmissive(double rouge, double vert, double bleu){
		
		rougeEmissif = rouge;
		vertEmissif = vert;
		bleuEmissif = bleu;
		
	}// FIN defCouleurEmissive
	
	
	/** Retourne la composante rouge de la couleur */
	public double obtenirRougeEmissif(){
		
		return rougeEmissif;
		
	}// FIN retRougeEmissif
	
	
	/** Retourne la composante verte de la couleur */
	public double obtenirVertEmissif(){
		
		return vertEmissif;
		
	}// FIN retVertEmissif
	
	
	/** Retourne la composante bleue de la couleur */
	public double obtenirBleuEmissif(){
		
		return bleuEmissif;
		
	}// FIN retBleuEmissif
	
	
	/** Défini une image de texture */
	public void définirImage(IImage image){
		
		this.image = image;
		
	}// FIN définirImage
	
	
	/** Retourne l'image de texture */
	public IImage obtenirImage(){
		
		return image;
		
	}// FIN obtenirImage


	@Override
	public String obtenirNom() {
		
		return nom;
		
	}// FIN obtenirNom


	@Override
	public void définirNom(String nom) {
		
		this.nom = nom;
		
	}// FIN définirNom
	

}// FIN Classe
